home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 9 / Night Owl CD-ROM (NOPV9) (Night Owl Publisher) (1993).ISO / 010a / apop.zip / APOP.PRG < prev    next >
Text File  |  1993-04-24  |  4KB  |  87 lines

  1. ************************************************************************
  2. *  PROGRAM: APOP.PRG
  3. *  WRITER: KRAIG W. KRIST/T BEAR COMPUTER SERVICES.
  4. *  DATE: APRIL 1993
  5. *  DESCRIPTION: GENERIC FUNCTION.   WILL ACHOICE PASSED aPOP IN PASSED
  6. *               WINDOW COORDINATES nTOP, nLEFT, nBOTTOM, nRIGHT
  7. ************************************************************************
  8. *           ---- MODIFICATION LOG ----
  9. *  WHEN:
  10. *   WHY:
  11. ************************************************************************
  12. *
  13. * CALLED BY:            
  14. *   PASSED IN FROM         : nTOP, nLEFT, nBOTTOM, nRIGHT, aPOP
  15. *   RETURNS TO         : SELECTED VALUE
  16. *
  17. * CALLS: AC_OPT (FUNCTION AUTOMATICALLY HANDLED BY ACHOICE)
  18. *   PASSES TO AC_OPT:
  19. *   RETURNED FROM AC_OPT:
  20. ************************************************************************
  21. #INCLUDE "BOX.CH"
  22. ************************************************************************
  23. *  FUNCTION APOP
  24. ************************************************************************
  25. FUNCTION APOP(nTOP,nLEFT,nBOTTOM,nRIGHT,aPOP)
  26. ************************************************************************
  27. *  DECLARE VARIABLES
  28. ************************************************************************
  29.   MEMVAR nARR_SIZE, nTMP, aSCROLLBAR, nWTOP, nWBOTTOM, nCENTER
  30.   LOCAL cSAVE_SCR, lTOOBIG, cRET_VAL
  31.   PRIVATE nTMP, nCENTER, nWTOP, nWBOTTOM, nARR_SIZE
  32. ************************************************************************
  33. *  INITIALIZE VARIABLES
  34. ************************************************************************
  35.   PRIVATE aSCROLLBAR := {}
  36.   nTMP := nCENTER := 0
  37.   nWTOP := nTOP
  38.   cSAVE_SCR := SAVESCREEN(0,0,MAXROW(),MAXCOL())
  39.   nARR_SIZE := LEN(aPOP)
  40. ************************************************************************
  41. *  DETERMINE IF AVAILABLE DATA WILL FIT IN THE WINDOW SIZE
  42. ************************************************************************
  43.   nWBOTTOM := IF(((nBOTTOM-nTOP) > nARR_SIZE),;
  44.               (nWTOP+nARR_SIZE+1),nBOTTOM)
  45.   lTOOBIG := IF((nARR_SIZE > (nWBOTTOM-nTOP-1)),.T.,.F.)
  46.   WINSHADE(nTOP,nLEFT,nWBOTTOM,nRIGHT)
  47. ************************************************************************
  48. *  DETERMINE CENTER
  49. ************************************************************************
  50.   nCENTER := nLEFT + ((nRIGHT-nLEFT)/2-4)
  51. ************************************************************************
  52. *  PAINT
  53. ************************************************************************
  54.   @ nTOP,nLEFT,nWBOTTOM,nRIGHT BOX B_DOUBLE
  55. ************************************************************************
  56. *  INITIALIZE SCROLL BAR
  57. ************************************************************************
  58.   SCROLLBARNEW(nTOP,nRIGHT,nWBOTTOM,'W/B')
  59. ************************************************************************
  60. *  ISSUE APPROPRIATE TOP OF WINDOW MESSAGE
  61. ************************************************************************
  62.   @ nTOP, nCENTER SAY '  Top  '
  63. ************************************************************************
  64. *  ISSUE APPROPRIATE BOTTOM OF WINDOW MESSAGE
  65. ************************************************************************
  66.   IF lTOOBIG
  67.     @ nWBOTTOM,nCENTER SAY ' More ' + CHR(25) + ' '
  68.   ELSE
  69.     @ nWBOTTOM,nCENTER SAY ' Bottom '
  70.   ENDIF
  71. ************************************************************************
  72. *  PAINT INITIAL SCROLL BAR
  73. ************************************************************************
  74.   SCROLLBARDISPLAY()
  75.   SCROLLBARUPDATE(1,nARR_SIZE,.T.)
  76. ************************************************************************
  77. *  CALL CLIPPER ACHOICE FUNCTION
  78. ************************************************************************
  79.   nTMP := ACHOICE(nTOP+1,nLEFT+1,nWBOTTOM-1,nRIGHT-1,aPOP,,'AC_OPT')
  80.   RESTSCREEN(0,0,MAXROW(),MAXCOL(),cSAVE_SCR)
  81.   IF nTMP = 0
  82.     cRET_VAL := SPACE(1)
  83.   ELSE
  84.     cRET_VAL := ALLTRIM(aPOP[nTMP])
  85.   ENDIF
  86. RETURN(cRET_VAL)
  87.